"""
1、变量名必须是数字、字母、下划线组成
2、开头必须字母或下划线
3、区分大小写，一般用小写
4、变量名不能是关键字
"""
from enum import nonmember

__a,b,c = 123,456,789
print(__a,b,c)

"""
数据类型有：
数字  整型int 浮点型float
字符串
布尔
空
列表
元组
字典
"""

# 定义数字类型，以下下等价
count_01 = int(100)
count_02 = 100

pi_01 = float(3.14)
pi_02 = 3.14

print(type(pi_01))
print(type(3.1415926))

# 定义字符串，字符串不可改变
name = str('winner')
print(id(name)) #返回变量的内存地址
name1 = 'winner'
print(id(name1)) #只要有变量还使用着'winner' 变量地址就不会改变，以上2个变量地址相同
name = 'new winner'
print(id(name)) #变量地址被改变

info = '''
    今天天气不错
'''
print(type(info))

new_str1 = 'hello "world"'  #字符串里包含双引号
new_str2 = "hello \"world\""
print(new_str1)
print(new_str2)

print('he' in 'hello world')
print('hello' not in 'hello world')
print(max("今天天气不错hello world!")) #中文符号>字母>数字>英文符号
print(min("今天天气不错hello_world!"))

print('a'*3 + 'b' ) #字符串拼接

#布尔类型与空类型
print(bool(0))
print(bool(2))
print(bool(0.0))
print(bool(3.14))
print(bool(''))
print(bool(None))  #False

#列表list是一种有序，内容可重复的集合，可变（修改时地址不会改变）
none_list = [None]
print(none_list)
print(bool(none_list))
print(len(none_list))
print(type(none_list)) #列表只有一个元素时，是list类型

#元组tuple是一种有序，内容可重复的集合，不可变（只能重新赋值，地址会改变）
new_tuple = ('winner')
print(type(new_tuple)) #返回str类型，元组只有一个元素时，不是tuple类型
new_tuple = ('winner',)
print(type(new_tuple)) #返回tuple类型

#字典dict 其中key支持字符串、数字、元组类型，不支持列表， value支持所有数据类型
#字典里的每一个key一定是唯一的
#python3.7以后有序
new_dict = {'name': 'winner', 'age': 18}
print('name' in new_dict)  #True
print('winner' in new_dict)   #False
print(len(new_dict))

"""
赋值运算符
=   等于运算符   c = a + b
+=  加法运算符   
-=  减法运算符
*=  乘法运算符
/=  除法运算符
%=  取模运算符   如果可以被整除，返回0，否则返回余数
**= 幂运算符
//= 整除运算符   c //= a 等价与 c = c // a (返回除法运算符结果的整数部分)
"""

print(3 / 2)
print(3 // 2)

"""
比较运算符与身份运算符：
==  判断是否等于
!=  判断是否不等于
>   判断是否大于
<   判断是否小于
>=  判断是否大于等于
<=  判断是否小于等于
（<>  判断是否不等于 python3已弃用）
is  判断两个对象存储单元是否相同
is not  判断两个对象存储单元是否不同
"""
# 0~255范围比较
a = 18
b = 18
print(a == b)
print(a is b) # True
a = 300
b = 300
print(a is b) # 这里返回True，但在python解释器中这样操作返回False
